Event Handling and Interaction
In this section, we’ll cover how to listen for user interactions (like clicks, mouse movements, and keyboard inputs) and respond with dynamic changes in the DOM. Events are key to building interactive web applications, as they allow you to create custom responses to user actions.
Understanding JavaScript Events and Event Listeners
JavaScript events are actions or occurrences that happen in the browser, like a button click or a key press. An event listener is a function that listens for these events and executes code when they occur.
-
Adding an Event Listener
<button id="greet">Greet</button>
<p id="message"></p>const greetButton = document.getElementById("greet");
const message = document.getElementById("message");
// Event listener for a button click
greetButton.addEventListener("click", () => {
message.textContent = "Hello, welcome to the DOM!";
});Explanation: When the "Greet" button is clicked, the
click
event is triggered, and the message in the paragraph changes to display the greeting.
Handling User Input with Clicks, Mouse Events, and Keyboard Events
-
Mouse Events
Common mouse events include
click
,mouseover
, andmouseout
. You can use these events to create effects, such as highlighting elements on hover.<div id="hover-box" style="width:100px; height:100px; background-color:lightblue;">Hover over me!</div>
const hoverBox = document.getElementById("hover-box");
// Change color on mouseover
hoverBox.addEventListener("mouseover", () => {
hoverBox.style.backgroundColor = "orange";
});
// Revert color on mouseout
hoverBox.addEventListener("mouseout", () => {
hoverBox.style.backgroundColor = "lightblue";
});Explanation: When the mouse moves over the
hoverBox
div, its background color changes to orange. When the mouse leaves, it returns to light blue. -
Keyboard Events
Keyboard events such as
keydown
,keyup
, andkeypress
let you capture user inputs in real time.<input type="text" id="name-input" placeholder="Type your name">
<p id="display-name"></p>const nameInput = document.getElementById("name-input");
const displayName = document.getElementById("display-name");
// Display input value on keyup
nameInput.addEventListener("keyup", (event) => {
displayName.textContent = `Hello, ${event.target.value}`;
});Explanation: As you type into the input field, each keystroke updates the displayed greeting with the text entered.
Building Interactive Web Components
Let’s put these concepts together with a small interactive project—a counter button.
-
HTML Structure
<button id="increase">Increase</button>
<button id="decrease">Decrease</button>
<p id="counter">0</p> -
JavaScript Code
const increaseButton = document.getElementById("increase");
const decreaseButton = document.getElementById("decrease");
const counterDisplay = document.getElementById("counter");
let counter = 0;
// Increase the counter on click
increaseButton.addEventListener("click", () => {
counter++;
counterDisplay.textContent = counter;
});
// Decrease the counter on click
decreaseButton.addEventListener("click", () => {
counter--;
counterDisplay.textContent = counter;
});Explanation: Clicking "Increase" increments the counter, and clicking "Decrease" decrements it. The counter’s value updates in real time.